package com.fortune.dao;

import com.fortune.dto.in.pMAccountMgt.PMAccountAddDto;
import com.fortune.dto.in.pMAccountMgt.PMAccountEditDto;
import com.fortune.dto.in.pMAccountMgt.PMAccountListDto;
import com.fortune.dto.in.pMAccountMgt.PMUserUpAndDownDto;
import com.fortune.vo.pMAccountMgt.PMAccount;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PMAccountMgtDao {
    /**
     * 厂商列表
     * @param pmAccountListDto
     * @return
     */
    List<PMAccount> queryAccountList(PMAccountListDto pmAccountListDto);

    /**
     * 厂商列表个数
     * @param pmAccountListDto
     * @return
     */
    int queryAccountListCount(PMAccountListDto pmAccountListDto);

    /**
     * 检测是否存在
     * @param pmAccountAddDto
     * @return
     */
    int queryAccountIsExist(PMAccountAddDto pmAccountAddDto);

    /**
     * 检测是否存在
     * @param phone
     * @return
     */
    int queryAccountByNumber(String phone);

    /**
     * 添加厂商
     * @param companyId
     * @param pmAccountAddDto
     * @param url
     * @return
     */
    int addAccount(@Param("companyId") String companyId, @Param("pmAccountAddDto") PMAccountAddDto pmAccountAddDto, @Param("url") String url);

    /**
     * 添加员工信息
     * @param adminId
     * @param companyId
     * @param pmAccountAddDto
     * @param password
     * @return
     */
    int addMUserInfo(@Param("adminId") String adminId,@Param("companyId") String companyId,@Param("pmAccountAddDto") PMAccountAddDto pmAccountAddDto,@Param("password") String password);

    /**
     * 检测是否存在
     * @param id
     * @return
     */
    int queryAccountById(String id);

    /**
     * 检测是否存在
     * @param pmAccountEditDto
     * @return
     */
    int queryEditAccountIsExist(PMAccountEditDto pmAccountEditDto);

    /**
     * 通过id查询手机号
     * @param id
     * @return
     */
    String queryAccountPhoneById(String id);

    /**
     * 编辑厂商
     * @param pmAccountEditDto
     * @return
     */
    int editAccount(PMAccountEditDto pmAccountEditDto);

    /**
     * 编辑厂商
     * @param pmAccountEditDto
     * @param url
     * @return
     */
    int editAccountUrl(@Param("pmAccountEditDto") PMAccountEditDto pmAccountEditDto,@Param("url") String url);

    /**
     * 变价厂商员工
     * @param password
     * @param pmAccountEditDto
     * @return
     */
    int editMUser(@Param("password") String password,@Param("pmAccountEditDto") PMAccountEditDto pmAccountEditDto);

    /**
     * 删除经销商
     * @param id
     * @return
     */
    int deleteAccount(String id);

    /**
     * 重置厂商密码
     * @param acccountId
     * @param password
     * @return
     */
    int resetMPassword(@Param("acccountId") String acccountId, @Param("password") String password);

    /**
     * 查询厂商信息
     * @param id
     * @return
     */
    PMAccount queryAccountInfoById(String id);

    /**
     * 修改状态
     * @param userUpAndDownDto
     * @return
     */
    int upAndDownUser(PMUserUpAndDownDto userUpAndDownDto);

    /**
     * 查询厂商下经销商最大数量
     * @param companyId
     * @return
     */
    int queryCompanyDealerMaxCount(String companyId);

    /**
     *  添加厂商超级管理员
     * @param companyId
     * @param adminId
     * @param adminName
     * @return
     */
    int addMPosition(@Param("companyId") String companyId,@Param("adminId") String adminId,@Param("adminName") String adminName);

    /**
     *
     * @param pmAccountAddDto
     * @return
     */
    int queryAccountIsExistByName(PMAccountAddDto pmAccountAddDto);

    int queryAccountIsExistByAbbreviation(PMAccountAddDto pmAccountAddDto);

    int queryAccountIsExistByNumber(PMAccountAddDto pmAccountAddDto);

    int queryEditAccountIsExistByName(PMAccountEditDto pmAccountEditDto);

    int queryEditAccountIsExistByAbbreviation(PMAccountEditDto pmAccountEditDto);

    int queryEditAccountIsExistByNumber(PMAccountEditDto pmAccountEditDto);
}
